点
点表示XY平面上的位置。引擎内部不会修改一个已有点的位置(建议也不要自己去修改),所有会返回点的API都会返回一个创建出来的点。例如将点向某个方向移动,实际上是创建了一个新的点,而不是修改了传入的点。
创建
- 参数
- x (number) - X坐标
- y (number) - Y坐标
- 返回
- point (point) - 点
local point = base.point(x, y)
angle
求角度
- 参数
- target (point) - 目标点
- 返回
- angle (number) -
point
到target
的方向
- angle (number) -
返回值范围为(-180, 180]
。作为一个常用操作,我们提供了一个语法糖point / target
。(该语法糖即将被废弃)
local angle = point1:angle(point2)
local angle = point1 / point2 -- 除法操作符版本即将被废弃
copy
复制
- 返回
- new_point (point) - 复制出来的点
local new_point = point:copy()
distance
求距离
- 参数
- target (point) - 目标点
- 返回
- distance (number) -
point
到target
的距离
- distance (number) -
作为一个常用操作,我们提供了一个语法糖point * target
。(该语法糖即将被废弃)
local distance = point1:distance(point2)
local distance = point1 * point2 -- 乘号的语法糖即将被废弃
get_point
获取点
- 返回
- point (point) - 自己
这个方法不会创建一个新的点,返回的点就是对象自己。
local point = point:get_point()
get_xy
获取坐标
- 返回
- x (number) - X坐标
- y (number) - Y坐标
local x, y = point:get_xy()
is_block
是否是静态碰撞
由c++实现的api
- 参数
- scene_name (string) - 该点所在的场景名
- prevent_bits (string/table) 格子有该标记则阻挡, 默认是所有标记
- required_bits (string/table) 格子没有该标记则阻挡,默认没有标记
- 返回
关于[标记]* result (boolean) - 是否是静态碰撞
local result = point:is_block(scene_name)
is_visible
是否可见
由c++实现的api
- 参数
- dest (unit/player) - 单位/玩家
- scene_name (string) - 场景名
- 结果
- result (boolean) - 结果
判断点能否被dest
看到。如果dest
是单位,则会使用控制dest
的玩家来计算[视野]。
local result = point:is_visible(dest, scene_name)
play_sound
播放音效。多次播放的音效互不影响
由c++实现的api
- 参数
- name (string) - 音效名(音效表SoundData.ini里填的那个)
- distance (number) - 截断距离
- scene_name (string) - 场景名
当[玩家的英雄]与点的距离超过截断距离时,将听不到音效。
point:play_sound(name, distance, scene_name)
移动
- 参数
- angle (number) - 方向
- distance (number) - 距离
- 返回
- new_point (point) - 新的点
作为一个常用操作,我们提供了一个语法糖point - {angle, distance}
。
(该语法糖即将被废弃)
local new_point = point - {anlge, distance} -- 使用减号操作符的版本即将被废弃
local new_point = point:polar_to{angle, distance}
取反
- 返回
- new_point (point) - 新的点, 这个点的x,y,z = -x,-y,-z
local new_point = -point -- 点被反转了
相加
参数
- point2 (point)
返回
- new_point (point) 新的点
[new_x, new_y, new_z] = [self.x + point2.x, self.y + point2.y, self.z + point2.z]
local new_point = point + point2
坐标系映射
- 参数 origin (point) 目标坐标系的原点 facing (number) 目标坐标系在z轴旋转的角度
- 返回
- new_point (point) 相对于目标坐标系的位置
self的当前坐标系是: origin: base.point(0, 0), 0), facing: 0 将self从当前坐标系映射到坐标系(origin, facing)后, 返回self在该坐标系里的位置
local origin = {300, 300}
local facing = 45
local new_point = point:to_coordinate(origin, facing)
``` new_point = point:to_coordinate({300, 300}, 45)
[标记]: /server/base/api/mover?id=pathing_bit_prevent-amp-pathing_bit_requird